[PHP] vfs: report truthful per-object path configuration#752
Merged
brandonpayton merged 1 commit intoJul 11, 2026
Conversation
This was referenced Jul 10, 2026
Resolve pathconf and fpathconf against the live namespace, backend, and open-file handle instead of static libc answers. Preserve indeterminate -1 results without changing errno, validate guest pointers, and generate shared names and descriptors. Enforce byte-based NAME_MAX and PATH_MAX at namespace boundaries, expose terminal values from live termios state, and keep OPFS stat compatible with already-open sync handles. Add focused wasm32, wasm64, host, kernel, Node, and Chromium coverage. This changes required host imports and kernel export signatures. It is intentionally confined to the unmerged Batch 2 integration branch pending its single post-rebase ABI version reconciliation.
f975ced to
95c34d8
Compare
13 tasks
brandonpayton
added a commit
that referenced
this pull request
Jul 13, 2026
Pathconf return conventions, 64-bit output storage, syscall marshalling, the required host surface, errno behavior, and live-object interpretation change existing ABI semantics. Advance ABI 33 to 34 and regenerate ABI evidence atomically. Source-PR: #752
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Purpose
Make pathconf() and fpathconf() report the limits and capabilities of the object actually named or opened. The original patch aligned a few numeric constants and returned static answers from libc; it did not preserve POSIX indeterminate results, consult the mounted backend or live open-file description, validate guest output ranges, or define the host/kernel ABI.
Review of the original PR
The original one-commit head f975ced was not acceptable to land:
Replacement made during review
The replacement commit 95c34d8 (tree cb2949e1a) was rebuilt on the exact Batch 2 tip a71015b.
Known boundary
Host-captured stdio reports PIPE_BUF as indeterminate. The guest header still promises PIPE_BUF=4096, so that host-backed boundary remains documented rather than claimed as fully reconciled. Many other optional values are intentionally indeterminate. Performance was not measured.
ABI status
The snapshot, generated TypeScript, and headers are synchronized on this branch, but the exact-base same-version classifier intentionally reports an incompatible change: required host_pathconf/host_fpathconf imports, changed kernel export signatures, and new syscall descriptor semantics. This commit is acceptable only inside the unmerged #871 quarantine. After all constituents are present, #871 must rebase onto live main and perform its one atomic ABI version reconciliation and artifact rebuild. This PR does not claim standalone ABI compatibility or readiness for main.
Validation on the exact replacement tree
The full host/libc/POSIX/Sortix/full-PHPT aggregate gate has not been run for this constituent under the agreed batching contract.
Recommendation
Accept this replacement into #871 only. It fixes the platform contract exposed by PHP instead of special-casing PHP, has exact Node/browser evidence, and keeps its incompatible ABI delta quarantined for the aggregate reconciliation.